@烟雨
2年前 提问
1个回答
智能硬件的安全隐患
安全侠
2年前
数据存储不安全
移动设备用户面临的最大风险是设备丢失或被盗。任何捡到或偷盗设备的人都能得到存储在设备上的信息。这很大程度上依赖设备上的应用为存储的数据提供何种保护。很多智能硬件手机客户端的开发者对于智能硬件的配置信息和控制信息都没有选择可靠的存储方式。
服务端控制措施部署不当
现有智能硬件的安全策略由于要降低对于服务端的性能损耗,很多情况下是把安全的过规则部署在客户端,没有对所有客户端输入数据的输入检查和标准化。使用正则表达式和其他机制来确保只有允许的数据能进入客户端应用程序。
传输过程中没有加密
在智能硬件的使用过程中,存在连接开放Wi-Fi网络的情况,我们列一个清单,确保所有清单内的应用数据在传输过程中得到保护(保护要确保机密性和完整性)。清单中应包括身份认证令牌、会话令牌和应用程序数据。确保传输和接收所有清单数据时使用SSL/TLS加密(SeeCFNetworkProgrammingGuide)。
手机客户端的注入
手机客户端和Web应用程序的输入验证和输出过滤应该遵循同样的规则。要标准化转换和积极验证所有的输入数据。
身份认证措施不当
授权和身份认证大部分是由服务端进行控制的,服务端会存在用户安全校验简单、设备识别码规律可循、设备间授权不严等安全问题。目前可以在分析出设备身份认证标识规律的情况下,如MAC地址、SN号等都可以通过猜测、枚举的方式得到,从而批量控制大量设备,如下图所示。这个漏洞的危害在智能硬件里是最大的,因为它能够影响到全部的智能硬件。
密钥保护措施不当
有些IoT产品在开发过程中考虑到了安全加密,比如使用AES128位加密做为传输加密的内容,使用MD5加密用户密码。在对于对称性加密方式的处理过程中,密钥的保存方式是至关重要的。在IoT解决方案中,手机客户端发起的请求需要对数据内容进行加密,也就是说,手机客户端内需要有AES的密钥。如果对于密钥存放的方式不当,可以轻而易举地将数据还原成明文进行逆向分析,从而进行进一步的攻击。在对大量的IoT设备进行安全研究后发现,设备基本上都会把AES的密钥存放在手机客户端中,有的做得很简单,写在了一个加密函数里。有的做得很深,放在了一个Lib库中。但这些只是提高了一定的技术门槛而已,不是解决安全问题的办法。
会话处理不当
有很多智能设备都会由于会话管理措施不当,造成能够通过会话劫持攻击,直接控制设备,达到设备被破解的一种程度,所以说永远不要使用设备唯一标示符(如UDID、IP、MAC地址、IEME)来标示一个会话。保证令牌在设备丢失/被盗取、会话被截获时可以被迅速重置。务必保护好认证令牌的机密性和完整性(例如,只使用SSL/TLS来传输数据)。使用可信任的服务来生成会话。
敏感数据泄露
对于智能设备的安全研究,可以通过智能设备所泄露出来的数据,进行进一步利用,从而获得控制权限。所以必须保证安全的东西都不放在移动设备上;最好将它们(如算法、专有/机密信息)存储在服务器端。如果安全信息必须存储在移动设备上,尽量将它们保存在进程内存中。如果一定要放在设备存储上,就要做好保护。不要硬编码或简单地存储密码、会话令牌等机密数据。在发布前,清理被编译进二进制数据中的敏感信息,因为编译后的可执行文件仍然可以被逆向破解物,